import {
  SubjectTypeEnum,
  SubjectStatusEnum,
} from "@/enum/question-test/QuestionTestEnum";

/**
 * 选择的题目数据类型
 */
export interface SelectSubjectType {
  /* 它处于整个选择题的的索引 */
  index: number;
  /* 题目 */
  topic: string;
  /* 正确答案 */
  correct: string[];
  /* 是否正确选对该题 0: 答错 1: 答对 2: 未答 */
  status: SubjectStatusEnum;
  /* 当前用户选中了哪个选项 */
  target: string[];
  /* 是否结束这一题 */
  end: boolean;
  /* 题目类型 */
  type: SubjectTypeEnum;
  /* 选项 */
  answers: Array<{ title: string }>;
}

/**
 * 抽屉选项信息类型（部分）
 * @example DrawerInfoTypePartOptions<DrawerInfoType, 'activeName' | 'total'> // { activeName: string; total: number; }
 */
export type DrawerInfoTypePartOptions<T, K extends keyof T> = {
  [P in K]: T[P];
};

/**
 * 抽屉选项信息类型
 */
export interface DrawerInfoType {
  /* 抽屉是否显示 */
  show: boolean;
  /* 当前打开的抽屉面板 */
  activeName: string;
  /* 根据当前总试题数，显示多少条抽屉选项 */
  size: number;
  /* 一个抽屉选项展示多少个试题 */
  limit: number;
  /* 总试题数 */
  total: number;
  /* 抽屉选项卡子项类型 */
  drawerItems: Array<DrawerItemType>;
  /* 文档片段 */
  fragmentsItems: Array<DocumentFragment>;
}

/**
 * 抽屉选项卡子项类型
 */
export interface DrawerItemType {
  /* 当前活动面板名称 */
  name: string;
  /* 抽屉选项标题 */
  title: string;
  /* 开始数 */
  start: number;
  /* 结束数 */
  last: number;
}

/**
 * 格式化excel之前的JSON数据
 */
export interface XLSXJson {
  /* 答案 */
  select: string;
  /* 选择题类型：单选、多选、判断 */
  subject: SubjectTypeEnum;
  /* 题目 */
  topic: string;
}

/**
 * 格式化后的题目数据
 */
export interface FormattedItem {
  select: string;
  subject: string;
  topic: string;
  answers: { title: string }[];
}

